Архитектура ОС

Виртуализация и контейнеризация

Архитектура ОС

План лекции

1. Основы и история виртуализации

2. Архитектура виртуализации

3. Типы гипервизоров

4. Виртуальные машины

5. Контейнеризация: принципы и архитектура

6. Docker — платформа контейнеризации

7. Оркестрация контейнеров: Kubernetes

8. Безопасность виртуальных сред

9. Производительность и оптимизация

10. Облачные технологии

11. Современные тренды

12. Практические применения

Виртуализация и контейнеризация
Архитектура ОС

Введение

Виртуализация и контейнеризация — ключевые технологии современных вычислений, кардинально изменившие способы развертывания, управления и масштабирования приложений.

  • Эффективное использование вычислительных ресурсов
  • Повышение надежности и отказоустойчивости
  • Упрощение управления инфраструктурой
  • Автоматизация развертывания и масштабирования
  • Фундамент облачных вычислений
Виртуализация и контейнеризация
Архитектура ОС

1. Понятие виртуализации

Виртуализация — технология создания абстрактного слоя между физическим оборудованием и ПО, позволяющая запускать несколько виртуальных сред на одном физическом сервере.

  • Консолидация ресурсов — запуск нескольких ВМ на одном сервере
  • Изоляция — каждая ВМ работает в изолированной среде
  • Гибкость — легкое перемещение и клонирование ВМ
  • Управление — упрощенное администрирование и обслуживание
  • Энергоэффективность — снижение энергопотребления ЦОД
Виртуализация и контейнеризация
Архитектура ОС

История развития виртуализации

  • 1960-е — первая виртуализация в мейнфреймах IBM (CP-40, CP-67)
  • 1990-е — появление виртуализации на x86 платформе (VMware, Connectix)
  • 2000-е — массовое внедрение серверной виртуализации (ESX, Hyper-V, Xen)
  • 2010-е — расцвет облачных технологий и контейнеризации (Docker, K8s)
  • 2020-е — гибридные и мультиклаудные решения, serverless, edge computing
Виртуализация и контейнеризация
Архитектура ОС

2. Типы виртуализации

По уровню абстракции:

  • Полная — эмуляция полного аппаратного обеспечения
  • Паравиртуализация — модификация гостевой ОС для производительности
  • Гибридная — комбинация полной и паравиртуализации

По уровню внедрения:

  • Аппаратная — использование средств процессора (VT-x, AMD-V)
  • Программная — реализация на уровне ПО (эмуляция, бинарная трансляция)
Виртуализация и контейнеризация
Архитектура ОС

Компоненты виртуализационной системы

Гипервизор (Hypervisor):

  • Тип 1 (Bare-metal) — работает напрямую на оборудовании
  • Тип 2 (Hosted) — работает поверх хостовой ОС

Основные компоненты:

  • Менеджер виртуальных машин — создание и управление ВМ
  • Диспетчер ресурсов — распределение CPU, памяти, хранилища
  • Сетевой менеджер — управление виртуальными сетями
  • Менеджер хранилища — управление виртуальными дисками
Виртуализация и контейнеризация
Архитектура ОС

Принципы работы гипервизора

Разделение ресурсов:

  • CPU — виртуализация с временным разделением
  • Память — управление виртуальной и физической памятью
  • Устройства I/O — эмуляция и виртуализация
  • Сеть — виртуальные сетевые интерфейсы

Изоляция и безопасность:

  • Песочница (Sandbox) — изолированная среда выполнения
  • Контроль доступа — механизмы безопасности между ВМ
  • Мониторинг — отслеживание активности и производительности
Виртуализация и контейнеризация
Архитектура ОС

3. Гипервизоры типа 1 (Bare-metal)

Работают напрямую на аппаратном обеспечении. Высокая производительность и надежность, оптимизированы для энтерпрайз-сред.

  • VMware vSphere/ESXi — лидер рынка энтерпрайз-виртуализации
  • Microsoft Hyper-V — интегрирован в Windows Server
  • Citrix XenServer — открытая платформа виртуализации
  • KVM — встроен в ядро Linux, основа многих облаков
  • Proxmox VE — open-source платформа с KVM и LXC
Виртуализация и контейнеризация
Архитектура ОС

Гипервизоры типа 2 (Hosted)

Работают поверх хостовой ОС. Простота установки, подходят для разработки и тестирования.

  • Oracle VirtualBox — бесплатная кроссплатформенная виртуализация
  • VMware Workstation — профессиональная виртуализация для рабочих станций
  • Parallels Desktop — виртуализация для macOS
  • QEMU — эмулятор и виртуализатор с открытым исходным кодом
Виртуализация и контейнеризация
Архитектура ОС

4. Структура виртуальной машины

Компоненты ВМ:

  • Виртуальные устройства: CPU, память, диски, NIC
  • Гостевая операционная система
  • Приложения внутри ВМ
  • Конфигурация ресурсов и настроек

Типы виртуальных машин:

  • Системные ВМ — полная виртуализация аппаратной платформы
  • Процессные ВМ — виртуализация на уровне приложений (JVM, CLR)
Виртуализация и контейнеризация
Архитектура ОС

Управление виртуальными машинами

Основные операции:

  • Создание — из шаблона или с нуля
  • Конфигурация — настройка параметров ресурсов
  • Запуск/остановка — управление жизненным циклом
  • Миграция — перемещение между хостами
  • Клонирование и снапшоты

Мониторинг и оптимизация:

  • Метрики: CPU, память, диск, сеть
  • Автоматическое масштабирование
  • Балансировка нагрузки между хостами
Виртуализация и контейнеризация
Архитектура ОС

5. Понятие контейнеризации

Контейнеризация — виртуализация на уровне ОС, позволяющая запускать изолированные приложения в контейнерах, использующих общее ядро хост-системы.

  • Общее ядро — все контейнеры используют ядро хоста
  • Легковесность — минимальные накладные расходы
  • Быстрый запуск — секунды вместо минут
  • Высокая плотность — больше контейнеров на одном хосте
  • Портируемость — единая среда от разработки до продакшна
Виртуализация и контейнеризация
Архитектура ОС

Архитектура контейнеров

Ключевые технологии Linux:

  • Namespaces — изоляция процессов, сети, ФС
  • cgroups — ограничение и учёт ресурсов
  • Union FS — слоистая файловая система
  • SELinux/AppArmor — дополнительная безопасность

Типы изоляции (namespaces):

  • PID — изоляция идентификаторов процессов
  • Network — изолированный сетевой стек
  • Mount — изолированная файловая система
  • User — изоляция пользователей и прав
  • UTS — изоляция hostname
  • IPC — изоляция межпроцессного взаимодействия
Виртуализация и контейнеризация
Архитектура ОС

Сравнение контейнеров и виртуальных машин

Характеристика Виртуальные машины Контейнеры
Изоляция Полная аппаратная На уровне ОС
Производительность Ниже (эмуляция) Высокая (родная)
Запуск Минуты Секунды
Размер Гигабайты Мегабайты
Плотность Десятки на хост Сотни/тысячи
Портируемость Высокая Очень высокая
Совместимость Любая ОС Совместимое ядро
Виртуализация и контейнеризация
Архитектура ОС

6. Архитектура Docker

Компоненты Docker:

  • Docker Engine — ядро платформы
  • Docker Images — шаблоны для создания контейнеров
  • Docker Containers — запущенные экземпляры образов
  • Docker Registry — хранилище образов (Docker Hub)

Пример Dockerfile:

FROM ubuntu:20.04
RUN apt-get update && \
    apt-get install -y python3
COPY app.py /app/
WORKDIR /app
CMD ["python3", "app.py"]
Виртуализация и контейнеризация
Архитектура ОС

Управление контейнерами Docker

Основные команды:

  • docker run — запуск контейнера
  • docker build — создание образа
  • docker push/pull — работа с Registry
  • docker ps — просмотр контейнеров
  • docker stop/start — управление жизненным циклом
  • docker logs — просмотр логов

Сетевые режимы:

  • Bridge — изолированные сети между контейнерами
  • Host — использование сети хоста
  • Overlay — распределённые сети между хостами
  • None — без сетевого доступа
Виртуализация и контейнеризация
Архитектура ОС

7. Понятие оркестрации

Оркестрация — автоматизированное управление жизненным циклом контейнеров: развертывание, масштабирование, сетевое взаимодействие и обеспечение доступности.

  • Автоматическое развертывание на нужных хостах
  • Масштабирование количества экземпляров
  • Балансировка нагрузки между контейнерами
  • Обнаружение сервисов и регистрация
  • Централизованное управление конфигурацией
  • Мониторинг, логирование и самовосстановление
Виртуализация и контейнеризация
Архитектура ОС

Архитектура Kubernetes

Master-node (управление):

  • API Server — интерфейс управления
  • Scheduler — планировщик развертывания
  • Controller Manager — контроллеры состояний
  • etcd — распределённое хранилище

Worker-node (выполнение):

  • kubelet — агент управления контейнерами
  • kube-proxy — сетевой прокси
  • Container Runtime — среда выполнения (containerd, CRI-O)
Виртуализация и контейнеризация
Архитектура ОС

Основные объекты Kubernetes

Рабочие нагрузки:

  • Pod — минимальная единица развертывания
  • Deployment — декларативное управление репликами
  • StatefulSet — управление состоянием приложений
  • DaemonSet — запуск Pod на всех узлах
  • Job/CronJob — одноразовые и периодические задачи

Сеть и хранилище:

  • Service — стабильная сетевая конечная точка
  • Ingress — управление внешним доступом
  • PV/PVC — постоянное хранилище
  • ConfigMap — конфигурация
  • Secret — чувствительные данные
Виртуализация и контейнеризация
Архитектура ОС

8. Безопасность виртуальных машин

Угрозы:

  • Эскалация привилегий (выход из ВМ)
  • Утечки данных между ВМ
  • Отказ в обслуживании (потребление ресурсов)
  • Сниффинг виртуального трафика

Меры защиты:

  • Строгое разграничение ресурсов между ВМ
  • Шифрование данных при хранении и передаче
  • RBAC и многофакторная аутентификация
  • Мониторинг аномальной активности
  • Своевременное обновление и патчи
Виртуализация и контейнеризация
Архитектура ОС

Безопасность контейнеров

Особенности риска:

  • Общее ядро — уязвимость влияет на все контейнеры
  • Меньшая изоляция по сравнению с ВМ
  • Цепочка поставок образов и зависимостей

Меры защиты:

  • Сканирование образов на уязвимости
  • Криптографическая верификация подписей
  • Принцип наименьших привилегий
  • Безопасное хранение секретов
  • Сетевые политики между контейнерами
Виртуализация и контейнеризация
Архитектура ОС

9. Производительность виртуальных машин

Факторы снижения:

  • Накладные расходы 5–20%
  • Недостаток CPU, памяти, диска
  • Сетевые задержки виртуальных NIC
  • Конфликты ресурсов между ВМ

Методы оптимизации:

  • Баланс ресурсов между ВМ
  • Аппаратная виртуализация (VT-x, AMD-V)
  • SSD и кэширование дисковой подсистемы
  • Виртуальные сети с минимальной задержкой
  • Непрерывный мониторинг метрик
Виртуализация и контейнеризация
Архитектура ОС

Производительность контейнеров

Преимущества:

  • Минимальные накладные расходы
  • Быстрый запуск (секунды)
  • Эффективное использование памяти
  • Масштабируемость до тысяч экземпляров

Оптимизация:

  • Легковесные базовые образы (Alpine, distroless)
  • Многоступенчатая сборка (multi-stage build)
  • Кэширование слоев Union FS
  • Ограничение ресурсов через cgroups
  • Оптимизация overlay-сетей
Виртуализация и контейнеризация
Архитектура ОС

10. Облачные модели обслуживания

IaaS — инфраструктура как сервис:

  • Виртуальные серверы, сети, хранилища
  • Amazon EC2, Azure VMs, GCE
  • Пользователь управляет ОС и приложениями

PaaS — платформа как сервис:

  • Среда выполнения, БД, middleware
  • Heroku, Google App Engine, OpenShift
  • Пользователь управляет только приложениями

SaaS — ПО как сервис:

  • Готовое приложение через браузер
  • Salesforce, Office 365, Google Workspace
  • Пользователь использует приложение

FaaS — функция как сервис:

  • Выполнение кода без управления серверами
  • AWS Lambda, Azure Functions
  • Оплата за фактические вызовы
Виртуализация и контейнеризация
Архитектура ОС

Модели развертывания облаков

Публичные облака:

  • Масштабируемость, гибкая оплата
  • Глобальное присутствие
  • Меньший контроль, зависимость от провайдера
  • AWS, Azure, GCP

Приватные облака:

  • Полный контроль и безопасность
  • Кастомизация под требования
  • Высокие затраты, сложность управления
  • OpenStack, VMware vCloud

Гибридные облака:

  • Комбинация публичных и приватных
  • Гибкость и оптимизация затрат
  • Сложность управления и интеграции

Мультиоблако:

  • Использование нескольких провайдеров
  • Избежание vendor lock-in
  • Максимум отказоустойчивости
Виртуализация и контейнеризация
Архитектура ОС

11. Serverless вычисления

Концепция:

  • Выполнение кода без управления серверами
  • Оплата только за фактическое использование
  • Автоматическое масштабирование
  • Событийно-ориентированная архитектура

Платформы:

  • AWS Lambda, Azure Functions, Google Cloud Functions
  • OpenFaaS, Kubeless, Apache OpenWhisk

Преимущества:

  • Отсутствие управления инфраструктурой
  • Оптимизация затрат
  • Быстрое развертывание
Виртуализация и контейнеризация
Архитектура ОС

Микросервисная архитектура

Принципы:

  • Декомпозиция монолита на независимые сервисы
  • Независимое развертывание каждого сервиса
  • Изоляция по данным и функциональности
  • Индивидуальное масштабирование сервисов

Контейнеры для микросервисов:

  • Каждый сервис в своем контейнере
  • Горизонтальное масштабирование
  • Независимые циклы разработки
  • Разные стеки технологий
Виртуализация и контейнеризация
Архитектура ОС

Edge computing и IoT

Концепция Edge Computing:

  • Обработка данных близко к источнику
  • Снижение задержек и нагрузки на сеть
  • Локальная обработка и фильтрация

Контейнеры в Edge:

  • Легковесность — минимальные требования
  • Портативность — единая среда от облака до edge
  • Централизованное управление устройствами
  • Платформы: K3s, MicroK8s, Azure IoT Edge, AWS Greengrass
Виртуализация и контейнеризация
Архитектура ОС

12. CI/CD и DevOps

Непрерывная интеграция и доставка:

  • Одинаковые среды для всех стадий
  • Параллельное автоматическое тестирование
  • Автоматическое продвижение в продакшн
  • Быстрый откат к предыдущим версиям

Инструменты:

  • CI/CD: Jenkins, GitLab CI, GitHub Actions
  • Контейнеры: Docker, Kubernetes, Helm
  • IaC: Ansible, Terraform, Pulumi
Виртуализация и контейнеризация
Архитектура ОС

Архитектурные паттерны распределённых систем

Паттерны:

  • Service Mesh — управление взаимодействием сервисов
  • API Gateway — единая точка входа
  • Service Discovery — автоматическое обнаружение
  • Circuit Breaker — защита от каскадных отказов

Технологии:

  • Istio, Linkerd, Consul Connect
  • Envoy, NGINX, HAProxy
  • gRPC, REST, GraphQL
Виртуализация и контейнеризация
Архитектура ОС

Заключение

Виртуализация и контейнеризация — фундаментальные технологии современной ИТ-инфраструктуры, определяющие способы развертывания и управления приложениями.

  • Виртуализация — полная изоляция и совместимость, разные ОС на одном оборудовании
  • Контейнеризация — легковесная и быстрая альтернатива с минимальными накладными расходами
  • Оркестрация — автоматизация управления масштабируемыми приложениями
  • Облачные технологии — вычислительные ресурсы по требованию
  • Современные тренды — serverless, edge computing, микросервисы
Виртуализация и контейнеризация
Архитектура ОС

Ключевые выводы лекции

  • Виртуализация обеспечивает полную аппаратную изоляцию через гипервизоры типов 1 и 2
  • Контейнеры используют namespaces и cgroups для изоляции на уровне ОС
  • Docker стандартизировал контейнеризацию и экосистему образов
  • Kubernetes стал стандартом оркестрации контейнеров
  • Безопасность требует комплексного подхода: сканирование, RBAC, сетевые политики
  • Производительность контейнеров близка к родной; ВМ имеют накладные расходы 5–20%
  • Облачные модели (IaaS, PaaS, SaaS) определяют уровень абстракции сервиса
  • Serverless устраняет необходимость управления инфраструктурой
  • Микросервисы и контейнеры естественно дополняют друг друга
  • Edge computing расширяет контейнерные технологии на IoT-устройства
Виртуализация и контейнеризация
Архитектура ОС

Вопросы для самоконтроля

  1. Чем отличается виртуализация от контейнеризации с точки зрения архитектуры?
  2. Какие существуют типы гипервизоров и в чём их принципиальные различия?
  3. Какие технологии Linux обеспечивают изоляцию в контейнерах (namespaces, cgroups)?
  4. Как устроена архитектура Docker и из каких компонентов состоит?
  5. Что такое оркестрация контейнеров и какие задачи она решает?
  6. Как устроена архитектура Kubernetes (master/worker)?
  7. Какие основные объекты Kubernetes вы знаете и для чего они предназначены?
  8. Как обеспечивается безопасность в виртуальных и контейнерных средах?
  9. В чём различия облачных моделей IaaS, PaaS, SaaS и FaaS?
  10. Какие современные тренды в области виртуализации и контейнеризации существуют?
Виртуализация и контейнеризация
Архитектура ОС

Рекомендуемые ресурсы

Основная литература:

  1. Таненбаум Э., Бос Х. Современные операционные системы. 4-е изд.
  2. Столлингс В. Операционные системы. 9-е изд.

Дополнительная литература:

  1. Nigel Poulton. Docker Deep Dive
  2. Marko Lukša. Kubernetes in Action. 2nd ed.
  3. Brendan Gregg. Systems Performance. 2nd ed.

Онлайн-ресурсы:

  1. Docker Documentation — docs.docker.com
  2. Kubernetes Documentation — kubernetes.io/docs
  3. The Linux Kernel — Namespaces & Cgroups
  4. CNCF Landscape — landscape.cncf.io
  5. VMware Docs — docs.vmware.com
Виртуализация и контейнеризация

Переходим к обзору темы лекции. Обратите внимание студентов на масштаб — от исторических основ виртуализации до современных облачных технологий и трендов.

Виртуализация и контейнеризация — фундамент современных дата-центров и облачных платформ. Подчеркните: без этих технологий невозможны были бы AWS, Azure, Google Cloud.

Дайте чёткое определение виртуализации как технологии абстракции между железом и ПО. Ключевой тезис: несколько независимых сред на одном физическом сервере с полной изоляцией.

Краткий исторический экскурс. Виртуализация не нова — её корни в мейнфреймах IBM 1960-х. Современный бум начался с VMware в 1999 году и продолжается контейнерной революцией Docker.

Разберите разницу между полной виртуализацией и паравиртуализацией. Подчеркните роль аппаратной поддержки VT-x и AMD-V — без неё современная виртуализация была бы невозможна на x86.

Гипервизор — ключевой компонент любой виртуализационной системы. Менеджеры ресурсов обеспечивают справедливое распределение CPU, памяти и ввода-вывода между виртуальными машинами.

Подробно разберите механизмы разделения CPU и памяти. Подчеркните: изоляция — не только вопрос безопасности, но и стабильности — сбой в одной ВМ не должен «положить» соседние.

Bare-metal гипервизоры — основа энтерпрайз-виртуализации. Отметьте, что KVM встроен в ядро Linux и является основой большинства облачных платформ, включая OpenStack и Proxmox.

Hosted-гипервизоры проще в установке, но добавляют накладные расходы хостовой ОС. Идеальны для разработки и тестирования на рабочих станциях разработчиков.

Сравните системные ВМ с полной эмуляцией аппаратуры и процессные ВМ вроде JVM и CLR. Это разные уровни абстракции с разными целями и областями применения.

Жизненный цикл ВМ от создания до удаления. Особо выделите миграцию — уникальная возможность перемещать работающие ВМ между хостами без простоя, критичная для энтерпрайз-сред.

Ключевое отличие от ВМ: контейнеры делят ядро хоста. Это даёт легковесность и скорость запуска за секунды, но ограничивает совместимость — нужно совместимое ядро.

Namespaces и cgroups — фундамент контейнерной изоляции в Linux. Разберите каждый тип namespace: PID, Network, Mount, User — это важно для понимания границ изоляции.

Ключевой слайд для понимания. Выбор зависит от задачи: ВМ — для полной изоляции и разных ОС, контейнеры — для микросервисов и быстрого масштабирования.

Docker стандартизировал контейнеризацию и создал экосистему. Покажите пример Dockerfile — это наглядная демонстрация декларативного подхода к описанию окружения.

Продемонстрируйте основные команды. Обратите внимание на сетевые режимы — bridge, host, overlay — они критичны для многоуровневых приложений и микросервисной архитектуры.

Когда контейнеров становится много, ручное управление невозможно. Оркестрация автоматизирует развертывание, масштабирование, отказоустойчивость и обнаружение сервисов.

Master-worker архитектура K8s. API Server — единая точка входа, etcd — источник истины для всего состояния кластера. На worker-узлах kubelet управляет контейнерами.

Pod — минимальная единица развёртывания, Deployment — декларативное управление репликами. Объясните разницу между StatefulSet и Deployment для stateless- и stateful-приложений.

Главная угроза — VM escape, когда атакующий выходит из ВМ на хост. Разберите реальные примеры уязвимостей и подчеркните важность патчей и изоляции ресурсов.

Общее ядро — главный вектор атаки: уязвимость ядра затрагивает все контейнеры. Подчеркните важность сканирования образов и верификации цепочки поставок.

Накладные расходы 5–20% — плата за полную изоляцию. Аппаратная виртуализация VT-x и AMD-V значительно снижает overhead по сравнению с программной эмуляцией.

Контейнеры почти не имеют overhead — производительность близка к нативной. Multi-stage build и Alpine-образы — ключевые практики оптимизации размера и скорости.

IaaS, PaaS, SaaS, FaaS — эволюция уровня абстракции от виртуальных серверов до бессерверных функций. Чем выше абстракция, тем меньше управления, но больше ограничений.

Обсудите компромиссы: публичное облако — гибкость и масштаб, приватное — контроль и безопасность. Гибридные облака — популярный компромисс для крупных организаций.

Serverless не означает «без серверов» — это абстракция управления инфраструктурой. Идеально для событийно-ориентированных нагрузок с переменной интенсивностью вызовов.

Микросервисы и контейнеры — естественная пара. Каждый сервис в своём контейнере, независимо масштабируется и деплоится. Это фундамент современного подхода к разработке.

Edge computing переносит вычисления к источнику данных — снижает задержки и нагрузку на сеть. K3s и MicroK8s — легковесные варианты Kubernetes для edge-устройств.

Контейнеры обеспечивают воспроизводимость сред — ключевое требование CI/CD. IaC-инструменты Terraform и Ansible позволяют управлять инфраструктурой как кодом.

Service Mesh и Circuit Breaker — паттерны для построения надёжных распределённых систем. Istio и Envoy — индустриальные стандарты для реализации этих паттернов.

Подведите итог лекции: виртуализация — для полной изоляции, контейнеризация — для скорости и плотности, оркестрация — для управления масштабом. Все три технологии дополняют друг друга.

Основные тезисы лекции для закрепления материала. Рекомендуйте студентам запомнить различия между подходами и их области применения.

Эти вопросы покрывают все ключевые темы лекции. Дайте студентам 5 минут на самопроверку, затем обсудите наиболее сложные вопросы совместно.

Таненбаум — фундаментальная база, Docker Deep Dive и Kubernetes in Action — для практического погружения. Онлайн-документация Docker и K8s — лучший оперативный справочник.